import React from 'react';
import { Button } from 'antd-mobile';
// 导入xlsx库用于生成Excel 文件
import * as XLSX from 'xlsx';
// 导入file-saver库用于保存文件
import { saveAs } from 'file-saver';

// 定义组件的props类型
interface ExportExcelButtonProps {
    // 要导出的数据，数组形式
    data: object[];
    // 文件名
    fileName?: string;
    // 按钮文字
    children?: React.ReactNode;
}


const ExportExcelButton: React.FC<ExportExcelButtonProps> = ({
    data,
    fileName = '导出数据.xlsx',
    children = '导出Excel'
}) => {
    // 点击按钮是的处理函数
    const handleExport = () => {
        // 1. 将数据转换为工作表
        const worksheet = XLSX.utils.json_to_sheet(data);
        // 2. 创建一个新的工作簿
        const workbook = XLSX.utils.book_new();
        // 3. 将工作表添加到工作簿中
        XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
        // 4. 生成Excel文件的二进制数据
        const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
        // 5. 使用file-saver保存文件
        const file = new Blob([excelBuffer], { type: 'application/octet-stream' });
        saveAs(file, fileName);
    }
    return (
        <>
            <Button color='success' onClick={handleExport}>
                {children}
            </Button>
        </>
    )
}

export default ExportExcelButton;
// 导出组件